import {FsmState} from "./FsmState";

export interface IFsm<T> {

    Owner():T;

    FsmStateCount():number;

    IsRunning():boolean;

    IsDestroy():boolean;

    CurrentState():FsmState<T>;

    CurrentStateTime():number;

    Start(stateType:{prototype:FsmState<T>}):void;

    HasState(stateType:{prototype:FsmState<T>}):boolean;

    GetState(stateType:{prototype:FsmState<T>}):FsmState<T>;

    GetAllStates():FsmState<T>[];

    HasData(name:string):boolean;

    GetData(name:string):{};

    SetData(name:string,data:{}):void;

    RemoveData(name:string):boolean;


}